//package ran.utils;
//
//import org.apache.poi.ss.usermodel.*;
//import org.springframework.web.multipart.MultipartFile;
//import ran.entity.QuestionInfo;
//
//import java.io.InputStream;
//import java.util.ArrayList;
//import java.util.List;
//
//import static org.apache.commons.lang3.StringUtils.isAllEmpty;
//
//public class ExcelUtil {
//
//
//    /**
//     * 将上传的 Excel 文件解析为 Question 对象列表。
//     * 支持 .xls 和 .xlsx（通过 WorkbookFactory）
//     *
//     * @param file 前端上传的 MultipartFile
//     * @return 解析出的 Question 列表
//     * @throws Exception 读取/解析失败时抛出异常（调用方可以捕获并返回友好错误）
//     */
//    public static List<QuestionInfo> parseExcel(MultipartFile file) throws Exception {
//        List<QuestionInfo> list = new ArrayList<>();
//
//
//// 使用 try-with-resources 确保流和 Workbook 都能被正确关闭
//        try (InputStream inputStream = file.getInputStream();
//             Workbook workbook = WorkbookFactory.create(inputStream)) {
//
//
//// 取第一个 sheet（常见情形）
//            Sheet sheet = workbook.getSheetAt(0);
//
//
//// DataFormatter 能格式化单元格为字符串（避免数字、日期等格式问题）
//            DataFormatter formatter = new DataFormatter();
//
//
//// 如果 sheet 为空，直接返回空列表
//            if (sheet == null) return list;
//
//
//// 通过行号遍历（包含空行），避免 physicalRows 带来的索引偏差
//            int firstRowNum = sheet.getFirstRowNum();
//            int lastRowNum = sheet.getLastRowNum();
//
//
//// 假定第一行是表头，从 firstRowNum+1 开始解析数据行
//            for (int i = firstRowNum + 1; i <= lastRowNum; i++) {
//                Row row = sheet.getRow(i);
//                if (row == null) continue; // 整行为空，跳过
//
//
//// 读取每一列的值，使用 formatter.formatCellValue(cell) 将任何类型转为 String
//                String col0 = getCellString(row, 0, formatter); // 题目ID
//                String col1 = getCellString(row, 1, formatter); // 题目内容
//                String col2 = getCellString(row, 2, formatter); // 选项A
//                String col3 = getCellString(row, 3, formatter); // 选项B
//                String col4 = getCellString(row, 4, formatter); // 选项C
//                String col5 = getCellString(row, 5, formatter); // 选项D
//                String col6 = getCellString(row, 6, formatter); // 正确答案
//
//
//// 如果整行几乎为空（例如只包含空格），则跳过
//                if (isAllEmpty(col0, col1, col2, col3, col4, col5, col6)) {
//                    continue;
//                }
//
//                QuestionInfo q = new QuestionInfo();
//
//
//// 尝试将题目ID解析为 Integer（若无法解析则设为 null）
//                try {
//                    if (col0 != null && !col0.isEmpty()) {
//// 先去除小数点（Excel 数字型可能带有 .0）
//                        if (col0.contains(".")) {
//                            col0 = col0.substring(0, col0.indexOf('.'));
//                        }
//                    }
//                } catch (Exception e) {
//                    throw new RuntimeException(e);
//                }
//            }
//        }
//    }
//}
